﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ComunesMGI.Enums;
using ComunesMGI.Constantes;


namespace ComunesMGI.DataTypes
{
    [Serializable]
    public class DataWP
    {
        private int _id;
        private string _nombre;
        private DateTime _fechaInicio;
        private DateTime _fechaEstimadaEntrega;
        private DateTime _fechaEntrega;
        private DateTime _fechaFin;
        private int _esfuerzoTotal;
        private int _esfuerzoRestante;
        private DataEstadoWP _estado;
        private int _idSistema;



        public DataWP(string nombre, DateTime fechaIni, DateTime fechaEstEnt)
        {
            this._nombre = nombre;
            this._fechaInicio = fechaIni;
            this._fechaEstimadaEntrega = fechaEstEnt;
            this._fechaFin = ConstantesMGI.FechaVacia;
            this._fechaEntrega = ConstantesMGI.FechaVacia;
            this._esfuerzoRestante = ConstantesMGI.EnteroVacio;
            this._esfuerzoTotal = ConstantesMGI.EnteroVacio;
            this._idSistema = 0;

        }

        public DataWP(int id, string nombre, DateTime fechaIni, DateTime fechaEstEnt, DateTime fechaEnt, DateTime fechaFin, int esfuerzoTotal, int esfuerzoRestante, DataEstadoWP estado)
        {
            this.Id = id;
            this._nombre = nombre;
            this._fechaInicio = fechaIni;
            this._fechaFin = fechaFin;
            this._fechaEstimadaEntrega = fechaEstEnt;
            this._fechaEntrega = fechaEnt;
            this._esfuerzoRestante = esfuerzoRestante;
            this._esfuerzoTotal = esfuerzoTotal;
            this.Estado = estado;
            this._idSistema = 0;

        }

        public DataWP(int id, string nombre, DateTime fechaIni, DateTime fechaEstEnt, DateTime fechaEnt, DateTime fechaFin, DataEstadoWP estado, int idSistema)
        {
            this.Id = id;
            this._nombre = nombre;
            this._fechaInicio = fechaIni;
            this._fechaFin = fechaFin;
            this._fechaEstimadaEntrega = fechaEstEnt;
            this._fechaEntrega = fechaEnt;
            this.Estado = estado;
            this._idSistema = idSistema;


        }


        public DataWP(int id, string nombre, DateTime fechaIni, DateTime fechaEstEnt, DateTime fechaEnt, DateTime fechaFin, int esfuerzoTotal, int esfuerzoRestante, DataEstadoWP estado, int idSistema)
        {
            this._id = id;
            this._nombre = nombre;
            this._fechaInicio = fechaIni;
            this._fechaFin = fechaFin;
            this._fechaEstimadaEntrega = fechaEstEnt;
            this._fechaEntrega = fechaEnt;
            this._esfuerzoRestante = esfuerzoRestante;
            this._esfuerzoTotal = esfuerzoTotal;
            this._estado = estado;
            this._idSistema = idSistema;
        }

        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }

        public string Nombre
        {
            get { return _nombre; }
            set { _nombre = value; }
        }

        public DateTime FechaInicio
        {
            get { return _fechaInicio; }
            set { _fechaInicio = value; }
        }

        public DateTime FechaEstimadaEntrega
        {
            get { return _fechaEstimadaEntrega; }
            set { _fechaEstimadaEntrega = value; }
        }

        public DateTime FechaEntrega
        {
            get { return _fechaEntrega; }
            set { _fechaEntrega = value; }
        }

        public DateTime FechaFin
        {
            get { return _fechaFin; }
            set { _fechaFin = value; }
        }

        public int EsfuerzoTotal
        {
            get { return _esfuerzoTotal; }
            set { _esfuerzoTotal = value; }
        }

        public int EsfuerzoRestante
        {
            get { return _esfuerzoRestante; }
            set { _esfuerzoRestante = value; }
        }


        public DataEstadoWP Estado
        {
            get { return _estado; }
            set { _estado = value; }
        }

        public int IdSistema
        {
            get { return _idSistema; }
            set { _idSistema = value; }
        }

        public override bool Equals(Object obj)
        { 
            DataWP data= (DataWP)obj;
            return this._nombre.Equals(data.Nombre) && this._fechaInicio.Equals(data.FechaInicio) && this._fechaEstimadaEntrega.Equals(data.FechaEstimadaEntrega)
                && this._esfuerzoRestante == data.EsfuerzoRestante && this._esfuerzoTotal ==data.EsfuerzoTotal && this.FechaEntrega.Equals(data.FechaEntrega) && 
                this._idSistema==data.IdSistema && this._id==data.Id && this.Estado.Equals(data.Estado) && this.FechaFin.Equals(data.FechaFin);


        }
    }
}
